//
//  HDOperationDataManager.m
//  HDOperationProject
//
//  Created by Mirko on 15/10/30.
//  Copyright (c) 2015年 Mirko. All rights reserved.
//

#import "HDOperationDataManager.h"
#import "HDNetworkOperationManager.h"
#import "HDOperationTools.h"
#import "HDOperationActivitiesData.h"

@interface HDOperationDataManager ()

@property (nonatomic, strong) NSString *adImageFold;        // 广告图片目录
@property (nonatomic, strong) NSString *plistPath;          // 广告信息plist路径

@property (nonatomic, strong) NSArray *adInfos;             // 广告信息集合
//@property (nonatomic, strong) HDOperationActivitiesData *adInfo;      // 广告信息

@end

@implementation HDOperationDataManager

+ (instancetype)shareManager {
    
    static HDOperationDataManager *sharedManager = nil;
    static dispatch_once_t pred;
    dispatch_once(&pred, ^{
        sharedManager = [[self alloc] init];
    });
    return sharedManager;
}

-(instancetype) init {
    
    self = [super init];
    if (self) {
        
        // 创建图片目录
        self.adImageFold = [HDOperationTools getAdImageFolderPath];
        
        // 加载本地广告图片
        [self loadStartImages];
        
//        self.activitiesData = [HDOperationActivitiesData data:[[NSDictionary alloc] init]];
    }
    return self;
}

// 加载本地广告图片
- (void)loadStartImages {
    
    // 根据配置文件信息获取配置文件
    NSArray *plistArray = [NSArray arrayWithContentsOfFile:[HDOperationTools getAdInfoPlistPath]];
    
    self.adInfos = [HDOperationActivitiesData modelsFromArray:plistArray];
}

//// 获取随机一个广告信息
//- (HDOperationActivitiesData *)randomAdInfo {
//    
//    NSUInteger count = self.adInfos.count;
//    
//    if (count > 0) {
//        
//        NSUInteger index = arc4random() % count;
//        
//        NSLog(@"随机数: index: %ld 总数: %ld", index, count);
//        self.adInfo = self.adInfos[index];
//    }else {
//        
//        // 可以返回一个默认的对象
//    }
//    
//    // 保存已经展示的广告图片名字
//    
//    // 刷新广告信息plist文件
//    [self downLoadConfigurationPlist];
//    
//    return _adInfo;
//}
//
//// 获取第一个广告信息
//- (HDOperationActivitiesData *)firstAdInfo {
//    
//    NSUInteger count = self.adInfos.count;
//    if (count > 0) {
//        self.adInfo = self.adInfos.firstObject;
//    }else {
//        
//    }
//    
//    // 保存已经展示的广告图片名字
//    
//    // 刷新广告信息plist文件
//    [self downLoadConfigurationPlist];
//    
//    return _adInfo;
//}

// 获取第需要显示的广告
- (HDOperationActivitiesData *)needShowAdInfo {
    
    NSArray *plistArray = [NSArray arrayWithContentsOfFile:[HDOperationTools getAdInfoPlistPath]];
    
    NSArray *models = [HDOperationActivitiesData modelsFromArray:plistArray];
    
    HDOperationActivitiesData *adInfo = nil;
    
    // 查找是否有符合条件的广告(当前时间在广告上线时间之内)
    for (HDOperationActivitiesData *model in models) {
        
        if (model.isNeedDisplay) {
            adInfo = model;
        }
    }
    
    // 如果没有复合条件的广告，展示默认广告
//    if (adInfo == nil) {
//        adInfo = [HDOperationActivitiesData defaultAdInfo];
//    }
    
    // 刷新广告信息plist文件
    [self downLoadConfigurationPlist];
    
    // 测试
//    adInfo = [HDOperationActivitiesData testModel];
    
    return adInfo;
}

// 是否需要显示广告
- (BOOL)isNeedShowAd {
    
    if (self.needShowAdInfo) {
        
        return YES;
    }else {
     
        return NO;
    }
}

// 过滤需要删除的图片
- (void)deleteExpireImage {
    
    NSArray *plistArray = [NSArray arrayWithContentsOfFile:[HDOperationTools getAdInfoPlistPath]];
    
    if (plistArray.count > 0) {
        
        NSArray *models = [HDOperationActivitiesData modelsFromArray:plistArray];
        
        // 查找是否有符合条件的广告(当前时间在广告上线时间之内)
        for (HDOperationActivitiesData *model in models) {
            
            if (model.isNeedDelete) {
                
                // 删除该图片
                BOOL isSucess = [HDOperationTools removeFileWithPath:model.pathDisk];
                
                if (isSucess) {
                    
                    NSLog(@"删除图片成功，图片路径%@", model.pathDisk);
                }
            }
        }
        
    }
    
}

// 下载展示页面配置信息
- (void)downLoadConfigurationPlist {
    
    [HDNetworkOperationManager downLoadConfigurationPlistWithURL:self.adURL
                                               completionHandler:^(NSArray *dataList, NSURLResponse *response, NSError *error) {
               
        if (error == nil) {     // 请求成功
            
            if (dataList.count > 0) {
                
                // 01.删除不需要显示的广告图片
                [self deleteExpireImage];
                
                // 02.做相应的保存操作
                if ([dataList writeToFile:[HDOperationTools getAdInfoPlistPath] atomically:YES]) {
                    
                    // 02.下载完成后，下载图片数据
                    [self startDownloadImage];
                }
            }
            
        }else {      // 请求失败
            
        }
        
    }];
    
}

// 下载图片
- (void)startDownloadImage {
    
    NSArray *plistArray = [NSArray arrayWithContentsOfFile:[HDOperationTools getAdInfoPlistPath]];
    
    NSArray *models = [HDOperationActivitiesData modelsFromArray:plistArray];
    
    // 过滤数组，如果还没有下载图片的，需要下载
    NSMutableArray *needToDownloadArray = [NSMutableArray array];
    NSFileManager *fm = [NSFileManager defaultManager];
    for (HDOperationActivitiesData *model in models) {
        
        if (![fm isExecutableFileAtPath:model.pathDisk]) {
            [needToDownloadArray addObject:model];
        }
    }
    
    for (HDOperationActivitiesData *model in needToDownloadArray) {
        [model startDownloadImage];
    }
}












//// 获取图片
//- (void)getStartImage {
//
//    // 01.从本地获取图片
//
//    // 02.把已经获取的图片名字保存到userdefault中
//
//    // 03.下载配置文件
//    [self downLoadConfigurationPlist];
//}


//-(void) updataOperationActivitiesData {
//
//
//}

@end











































